<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>闭包</title>
</head>

<body>
    <script type="text/javascript">
    var outValue = 'sam';
    var later; //
    // console.log(later.__proto__);
    // 
    !(function outer() {
        var innerV = 'ninja';

        function inner() {
            console.info(innerV)
        }
        later = inner;
    })();
    later();
    // 变量接收一个函数里面返回的内部函数，通过这个函数访问函数运行时的上下文信息
    // 在内部这个函数里面是可以访问到运行外部函数时返回这个内部函数时的所有变量和函数
    // 信息放在作用域链上
    delete(window.later);
    // later=null;
    // later=undefined;
    ///////////
    //封装私有变量 //
    ///////////
    console.log(later);
    console.log(later.__proto__);
    console.log(later.prototype);

    function ninja() {
        var feints = 0;
        this.get = function() {
            return feints;
        }
        this.feint = function() {
            feints++;
        }
    }
    var n1 = new ninja();

    console.log(n1.get())
    console.log(n1.feint())
    console.log(n1.get())
    console.info(n1.feints);
    //////////
    // 回调函数 //
    //////////
    </script>
</body>

</html>